package com.one.util;

import com.one.constant.RequestReturnConstant;

/**
 * @ClassName: RequestReturnFactory
 * @Date: 2022/1/14 09:58
 * @Description: 统一返回工厂实体
 */
public class RequestReturnFactory {

    /**
     * @Date: 2022/1/14 09:59
     * @return:
     * @Description: 返回成功状态 （没有数据）
     */
    public static <T> RequestReturn<T> success() {
        return RequestReturnFactory.success(null);
    }

    /**
     * @Date: 2022/1/14 09:59
     * @return:
     * @Description: 返回成功状态 （带有数据）
     */
    public static <T> RequestReturn<T> success(T data) {
        return success(RequestReturnConstant.RETURN_SUCCESS_CODE, RequestReturnConstant.RETURN_SUCCESS_MESSAGE, data);
    }

    /**
     * @Date: 2022/1/14 10:04
     * @return:
     * @Description: 自定义成功返回
     */
    public static <T> RequestReturn<T> success(Integer code, String message, T data) {
        return new RequestReturn<T>()
                .setCode(code)
                .setMessage((message != null && !"".equals(message)) ? message.toUpperCase() : "SUCCESS")
                .setData(data);
    }

    /**
     * @Date: 2022/1/14 09:59
     * @return:
     * @Description: 返回失败状态 （没有数据）
     */
    public static <T> RequestReturn<T> fail() {
        return RequestReturnFactory.fail(null);
    }


    /**
     * @Date: 2022/1/14 10:14
     * @return:
     * @Description: 返回失败 (带有数据)
     */
    public static <T> RequestReturn<T> fail(T data) {
        return fail(RequestReturnConstant.RETURN_FAIL_CODE, RequestReturnConstant.RETURN_FAIL_MESSAGE, data);
    }

    /**
     * @Date: 2022/1/14 10:13
     * @return:
     * @Description: 自定义失败返回
     */
    public static <T> RequestReturn<T> fail(Integer code, String message) {
        return new RequestReturn<T>()
                .setCode(code)
                .setMessage((message != null && !"".equals(message)) ? message.toUpperCase() : "FAIL")
                .setData(null);
    }

    /**
     * @Date: 2022/1/14 10:13
     * @return:
     * @Description: 自定义失败返回
     */
    public static <T> RequestReturn<T> fail(Integer code, String message, T data) {
        return new RequestReturn<T>()
                .setCode(code)
                .setMessage((message != null && !"".equals(message)) ? message.toUpperCase() : "FAIL")
                .setData(data);
    }
}
